#include "Escalera.h"

#include <glm\gtc\matrix_transform.hpp>


void Escalera::init(const glm::vec3 &posFuenteLuzDireccional, std::string vertShaderFileName, std::string fragShaderFileName) {
	this->m_cubo.init(posFuenteLuzDireccional, vertShaderFileName, fragShaderFileName);
}


void Escalera::setMaterial(const glm::vec3 &coefDifusion, const glm::vec3 &coefAmbiente, const glm::vec3 &coefEspecular) {
	this->m_cubo.setMaterial(coefDifusion, coefAmbiente,coefEspecular);
}


void Escalera::renderizar(const glm::mat4 &matVista, const glm::mat4 &matProyeccion, const glm::mat4 &matModelo) const {
	// Hay que escalarlo a 0.5 de alto(z), 1.5 de largo(x) y 0.5 de profundidad(y)
	glm::mat4 matModelEscalon = glm::scale(matModelo, glm::vec3(0.75f, 0.25f, 0.25f));

	// Lo coloca sobre el plano xy
	matModelEscalon = glm::translate(matModelEscalon, glm::vec3(0.0f, 0.0f, 1.0f));

	// Son 6 escalones de 0.5 metros de alto cada uno
	for (int i = 0; i < 6; ++i){
		float translacion = 2.0f * i;	// x2 porque las dimensiones originales del cubo eran 2x2x2
		glm::mat4 matModelo2 = glm::translate(matModelEscalon, glm::vec3(0.0f, translacion, translacion));
		this->m_cubo.renderizar(matVista, matProyeccion, matModelo2);
	}
}


